package com.spyz.hbase_api;

import org.apache.hadoop.hbase.NamespaceDescriptor;
import org.apache.hadoop.hbase.client.Admin;
import org.apache.hadoop.hbase.client.Connection;

import java.io.IOException;

public class P2_HBaseDDL_1 {
    public static Connection connection=P1_HbaseConnection_2.connection;

    /**
     * 创建命名空间
     * @param namespace 命名空间名称
     */
    public static void createNamespace(String namespace) throws IOException {
        // 1. 获取admin
        //  admin连接是轻量级的    不是线程安全的 不推荐池化或者缓存这个连接
        Admin admin = connection.getAdmin();

        // 2. 调用方法创建命名空间
        //  代码相对shell更加底层   所以shell能实现的 代码一定能实现
        //  所以需要填写完整的命名空间描述

        // 2.1 创建命名空间描述建造者
        NamespaceDescriptor.Builder builder = NamespaceDescriptor.create(namespace);

        // 2.2 给命名空间添加需求
        builder.addConfiguration("user","spyz");

        // 2.3 使用builder构造出对应的添加完整参数的对象 完成创建
        admin.createNamespace(builder.build());

        // 3. 关闭admin
        admin.close();

    }

    public static void main(String[] args) throws IOException {

        // 测试创建命名空间
        createNamespace("spyz");

        // 其他测试代码
        System.out.println("ok");

        // 关闭连接
        P1_HbaseConnection_2.closeConnection();
    }

}
